CARLA and OpenDrive

您所在的位置:网站首页 opendriver master CARLA and OpenDrive

CARLA and OpenDrive

2024-06-01 17:16| 来源: 网络整理| 查看: 265

接續先前對高精地圖 HD Map 概念性的介紹,本篇會介紹在自駕模擬器 CARLA中,針對 OpenDrive 格式的 HD Map 操作。

2023 年 7 月 31 日

可以先從之前的文章 High level 了解 Map & HD Map,再從本篇了解基於 CARLA 自駕模擬器的環境,對 OpenDrive 高精地圖的相關實做方法。

HD Map 高精地圖 – 【知識筆記】 https://mapostech.com/hd-map/ CARLA

CARLA是已經發展數年,相當成熟的一款自動駕駛模擬器,背後的合作企業有 Intel、Nvidia 及 Toyota 等等。場景有高架道路、市區、停車場等,還有交通規則與號誌、天氣條件等,讓使用者在各種環境下測試自己的演算法。其實有玩過 GTA 俠盜列車手的人,可以把它當作一款沒有人的版本…。

詳細的說明可以參考官網:

官網

User Guide

安裝的話,我是透過 Anaconda 的 Python 來執行,跟本地環境做區隔。 Anaconda 的安裝很簡單,就不多贅述,裝好以後,在 Terminal conda 環境下先安裝 Python 3.7 跟相關的軟件包:

conda create -n py37 python=3.7 conda activate py37 pip install numpy pip install pygame

Carla的安裝可以參考上面Carla Documentation 的網頁,照著步驟說明安裝,就沒有問題。

裝好以後,在 Terminal 執行CarlaUE4.exe , 我有遇到 dirextX 問題,去微軟官網下載安裝就可解決。成功運行就會看下面畫面:

CARLA

接著再另外開一個 Terminal,在這邊輸入想做的操作,例如執行 sample code automatic_control.py。要注意這邊要先在 conda 環境下啟動 python。

conda activate py37 python automatic_control.py conda activate py37

參考資料:

https://blog.csdn.net/fhzhu830/article/details/120614040

HD Map in CARLA

安裝好之後,可以在 HDMaps 路徑下找到內建的地圖檔案,以 Town + 編號命名的 .xodr 檔案。也可以上CARLA的 github 查閱。每個地圖有不同的環境內容,可以上Carla Documentation 網站,左邊目錄選擇 Maps ,會看到一張總表,再逐一點進去看地圖的特色介紹。

CARLA CARLA 取得速限訊息

下面會以取得 OpenDriver 地圖中,目前車道的速限為主題,說明相關操作:

# get map world = client.load_world('Town01') # get map object, 這邊就是另一篇文章提到對高精地圖的物件化 map = world.get_map() # 根據輸入的位置 (x, y, z),取得最近的 waypoint # 注意輸入坐標要是CARLA坐標系統,與 ROS 或 UTM 可能是不同的 # ex. transform = trans.ros_pose_to_carla_transform(msg.pose.pose) wp = carla_map.get_waypoint(transform.location) # 根據這個 wp 與間距參數 d 生成整條車道的 waypoint list wps_front = wp.next_until_lane_end(d) // wp 到車道終點的 list wps = wp.previous_until_lane_start(d) // wp 到車道起點的 list wps.reverse() // reverse 後會從車道起點開始排序 for wp0 in wps_front : wps.append(wp0) # 從 landmarks type 型別中取得 wp 200m 範圍內所有的速限, ID 是 274 # 以這個例子來說,其實最終我只在意最近的速限,故取清單中的第一筆 speed_limits = wp.get_landmarks_of_type(200.0, "274", False) if speed_lims: speed_limit = speed_limits[0].value

LandmarkType 中定義了許多資料類別, 速限是 MaximumSpeed , Type 274。可以參考列表,自行修改取得其他的資料。

上面使用到的Carla APIs 與地圖相關操作可以參考:

Carla地圖連結1

Carla地圖連結2

Carla坐標系統

Waypoint 的結構

其他參考資料:

https://blog.csdn.net/wohu1104/article/details/126004611

延伸應用 曲率 & 坡度

車道曲率計算:

# 把車道 wp 的 xyz 取出 for wp0 in wps: x.append(wp0.transform.location.x) y.append(wp0.transform.location.y) z.append(wp0.transform.location.z) np.array(x) np.array(y) np.array(z) # 對車道 (waypoint list) 曲線擬合 curve = np.polyfit(x, y, 2) # 根據當前 wp 坐標與曲線方程計算目前曲率 curvature = np.absolute(2 * curve[0]) / ((1 + (2 * curve[0] * wp.transform.location.x + curve [1])**2)**1.5)

當前坡度計算:

# 從當前 wp 到車道終點的 waypoint list 取出下一個 wp wp_next = wps_front [0] # 依據坡度公式計算 slop ratio slop = (wp_next .transform.location.z - wp.transform.location.z) / ((wp_next .transform.location.x - wp.transform.location.x)**2 + (wp_next .transform.location.y - wp.transform.location.y)**2)**0.5 * 100

參考資料:

https://github.com/georgesung/advanced_lane_detection/blob/master/line_fit.py

https://x-engineer.org/road-slope-gradient-force/

上一篇: 建築樂園 x HIGH5 ▶ 新北中和環球 -【親子遊記】 下一篇: GNSS NMEA 處理 -【C 語言學習筆記】 相關


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3